package com.wang.jmonkey.modules.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wang.jmonkey.modules.system.model.entity.SystemAclEntity;
import com.wang.jmonkey.modules.system.model.enums.SystemAclPrincipalTypeEnum;
import com.wang.jmonkey.modules.system.model.param.SystemAclAuthParam;

import java.io.Serializable;
import java.util.List;

/**
 * 资源权限信息表(SystemAcl)表服务接口
 *
 * @author HeJiawang
 * @since 2021-05-21 21:43:55
 */
public interface SystemAclService extends IService<SystemAclEntity> {

    /**
     * 为权限主体授权
     * @param aclAuthParam 授权信息
     * @return true 授权成功
     */
    boolean auth(SystemAclAuthParam aclAuthParam);

    /**
     * 删除用户主体的权限信息
     * @param principalId 数据主体id
     * @Param type 数据主体类型
     * @return true 删除成功
     */
    boolean deleteByPrincipalId(Serializable principalId, SystemAclPrincipalTypeEnum type);

    /**
     * 获取角色资源权限id集合
     * @param principalId 权限主体id
     * @param type 权限主体类型
     * @return 资源id集合
     */
    List<Long> listAcl(Long principalId, SystemAclPrincipalTypeEnum type);

    /**
     * 获取用户资源权限id集合
     * @param userId 用户id
     * @return 资源id集合
     */
    List<Long> listUserAcl(Long userId);
}
